import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 86132
 * Date: 2022-04-12
 * Time: 22:37
 */
public class Demo {
    public static void main(String[] args) throws FileNotFoundException {
     /*   //构造方法中需要指定打开文件的路径
        //此处的路径可以是绝对路径，也可以是相对路径，还可以是File对象
        InputStream inputStream=null;
        try {
            //1、创建对象，同时也在打开文件
            inputStream=new FileInputStream("d:/test.txt");
            //2、尝试一个一个字节的读，把整个文件都读完
            while(true){
                int b=inputStream.read();//当返回值为-1时证明读到了文件末尾
                if(b==-1){
                    //读到了文件末尾
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //3、读完之后关闭文件，释放资源
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }*/

      /*  try(InputStream inputStream=new FileInputStream("d;/test.txt")) {//因为所有的流对象都实现了Closeable这个接口，所以可以放到try()中
            while(true){
                int b=inputStream.read();
                if(b==-1){
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }*/

        try (InputStream inputStream = new FileInputStream("d:/test.txt")) {
            //一次读若干个字节
            while (true) {
                byte[] buffer = new byte[1024];
                int len = inputStream.read(buffer);//这个操作是把读出来的结果放到buffer这个数组中了，相当于是使用参数来表示这个方法的返回值，这种做法称为“输出型参数”
                if (len == -1) {
                    break;//如果返回-1，证明读完了
                }
                for (int i = 0; i < len; i++) {
                    System.out.println(buffer[i]);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }



    }
}
